/*
 * Solution.h
 *
 *  Created on: 1 Aug 2011
 *      Author: Allan
 */

#ifndef SOLUTION_H_
#define SOLUTION_H_

// C++ includes
#include <string>
#include <vector>
using namespace std;

// Eigen includes
#include <Eigen/Core>
using namespace Eigen;

class Solution 
{
public:
	Solution() {}
	
	virtual ~Solution() {}
	
	virtual const string
	GetName() const = 0;
	
	virtual const vector<string>
	GetSpecies() const = 0;
	
	virtual const VectorXd
	MolarFractions(const VectorXd& n) const = 0;
	
	virtual const VectorXd
	Concentrations(const VectorXd& n) const = 0;
	
	virtual const VectorXd
	ActivityCoefficients(double T, double P, const VectorXd& n) const = 0;
	
	virtual const VectorXd
	Activities(double T, double P, const VectorXd& n) const = 0;
};

#endif /* SOLUTION_H_ */
